/*
 * 测试非标准语法(目前并不属于ES2021规范)
 */

class Lion {
    // 非标准语法: 使用 # 为前缀的字段是私有字段
    // 在类体括号中直接声明的、以# 为前缀的字段是私有字段
    #name = null ; // 以分号为结尾
    constructor(name){
        console.log( '在构造函数中为私有字段赋值' );
        // 在构造函数中可以使用私有字段
        this.#name = name ;
    }
    eat(food){
        // 在实例方法中可以访问私有字段
        console.log( this.#name + '吃' + food );
    }
    get name(){
        console.log( '获取字段赋值' );
        return this.#name ;
    }
    set name(s) {
        console.log( '为私有字段赋值' );
        this.#name = s ;
    }
}

let x = new Lion( '辛巴' );
// console.log( x.#name ); // 在类体之外访问私有字段会抛出 SyntaxError
x.eat( '牛肉' );

x.name = '九灵元圣' ;
console.log( x.name );
x.eat( '烤全羊' );